home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / mac / Technical Documentation / Develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a15.sea / Scriptable Database 1.0a15 / Foundation / EveryItemProxy.h / EveryItemProxy.h
Encoding:
C/C++ Source or Header  |  1996-02-20  |  2.7 KB  |  92 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        EveryItemProxy.h
  3.  
  4.     Contains:    Proxy token for 'every item of...'
  5.  
  6.     Written by:    Greg Anderson
  7.  
  8.     Copyright:    © 1993-1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.          <8>     9/18/95    ga        
  11. */
  12.  
  13. #ifndef __EVERYITEMPROXY__
  14. #define __EVERYITEMPROXY__
  15. #define EveryItemProxy_h
  16.  
  17. //
  18. // ProxyToken.h is needed because
  19. // TProxyToken is the base class of TEveryItemProxy
  20. //
  21. #include "ProxyToken.h"
  22.  
  23. //
  24. // AbstractIterator is needed because TAbstractIterator
  25. // is the base class of TEveryElementOfClassIterator
  26. //
  27. #include "AbstractIterator.h"
  28.  
  29. class TEveryItemProxy : public TProxyToken
  30.     {
  31. public:
  32.     DeclareSmallClassData(TEveryItemProxy, TProxyToken);
  33.  
  34.                                         TEveryItemProxy();
  35.     virtual                                ~TEveryItemProxy();
  36.     
  37.     void                                IEveryItemProxy(TAbstractScriptableObject* objectOfDesignation, DescType desiredClass = typeWildCard);
  38.  
  39.     virtual Boolean                        DerivedFromOSLClass(const TAETransaction& t, DescType objectClass);
  40.  
  41.     virtual TAbstractObjectIterator*    DirectObjectIterator(const TAETransaction&);
  42.     // ◊Script:  we need an ElementIterator also
  43.  
  44. protected:
  45.     DescType                    fDesiredClass;
  46.     };
  47.  
  48.  
  49. //========================================================================================
  50. // Class TEveryElementOfClassIterator
  51. //========================================================================================
  52. class TEveryElementOfClassIterator : public TAbstractObjectIterator
  53. {
  54. private:
  55.     TAbstractObjectIterator*            fIter;
  56.     DescType                            fDesiredClass;
  57.  
  58.     virtual ~TEveryElementOfClassIterator();
  59.     
  60. public:
  61.     TEveryElementOfClassIterator(DescType desiredClass, TAbstractObjectIterator* iter) :
  62.         fDesiredClass(desiredClass),
  63.         fIter(iter) {}
  64.     
  65.     //
  66.     // Interface to code to:
  67.     //
  68.     virtual void                        Reset(const TAETransaction& t, Boolean iterationDirection = kForwardIteration);
  69.     virtual Boolean                        More(const TAETransaction&) const;
  70.     virtual void                        Next(const TAETransaction&);
  71.     virtual TAbstractScriptableObject*    Current(const TAETransaction&);
  72.  
  73.     //
  74.     // Performance enhancement:
  75.     //
  76.     virtual Boolean                        CurrentDerivedFromOSLClass(const TAETransaction& t, DescType objectClass);
  77.     virtual long                        CountElements(const TAETransaction& t, DescType desiredClass);
  78.     virtual TAbstractScriptableObject*    GetIndexedElement(const TAETransaction& t, DescType desiredClass, long index);
  79.     virtual TAbstractScriptableObject*    GetNamedElement(const TAETransaction& t, DescType desiredClass, TDescriptor nameDesc);
  80.     virtual Boolean                        Contains(const TAETransaction& t, TAbstractScriptableObject* objectToTestForMembership);
  81.  
  82.     virtual void                        SearchDeep(const TAETransaction& t, TAbstractCollector* collector, DescType desiredClass, TAbstractSearchSpec* searchSpec);
  83.     
  84. private:
  85.     //
  86.     // What is the desired type that we should use?
  87.     //
  88.     DescType                            DetermineAccessClass(DescType desiredClass);
  89. };
  90.  
  91. #endif
  92.